package com.mqz.zebraEcommerce.commodity.controller;

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import com.mqz.zebraEcommerce.commodity.service.CategoryService;
import com.mqz.zebraEcommerce.common.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

@RestController
@Slf4j
public class TestController {

//    @RequestMapping("/test")
//    public R testUpload() throws FileNotFoundException {
//        log.info("test Upload");
//        // yourEndpoint 填写 Bucket 所在地域对应的 Endpoint。以华东 1（杭州）为例，Endpoint 填写为 https://oss-cn-hangzhou.aliyuncs.com。
//        String endpoint = "oss-cn-hangzhou.aliyuncs.com";
//        // 阿里云账号 AccessKey 拥有所有 API 的访问权限，风险很高。强烈建议您创建并使用 RAM 用户进行 API 访问或日常运维，请登录 RAM 控制台创建 RAM 用户。
//        String accessKeyId = "LTAI5tPnY5nyaBkhvhhU5YV7";
//        String accessKeySecret = "QNJ3SBFvF7nPsxCnZI6mLau6y6D18Z";
//        // 填写 Bucket 名称
//        String bucketName = "zebra-ecommerce";
//        // 填写 Object完整路径，完整路径中不能包含Bucket名称
//        String objectName = "linux.jpg";
//        // 填写本地文件的完整路径
//        String filePath = "C:\\Users\\95290\\Pictures\\Saved Pictures\\linux.jpg";
//        // 创建 OSSClient 实例。
//        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//        try {
//            // 填写本地文件的完整路径。如果未指定本地路径，则默认从示例程序所属项目对应本地路径中上传文件流。
//            InputStream inputStream = new FileInputStream(filePath);
//            // 依次填写 Bucket 名称（例如 examplebucket ）和 Object 完整路径（ 例如 exampledir/exampleobject.txt）。Object 完整路径中不能包含 Bucket 名称。
//            ossClient.putObject(bucketName, objectName, inputStream);
//        } catch (FileNotFoundException e) {
//            e.printStackTrace();
//        } catch (OSSException e) {
//            e.printStackTrace();
//        } catch (ClientException e) {
//            e.printStackTrace();
//        } finally {
//            if (ossClient != null) {
//                ossClient.shutdown();
//            }
//        }
//        return null;
//    }

    @Resource
    private OSSClient ossClient;

    @RequestMapping("/test2")
    public R testUpload2() throws FileNotFoundException {

        FileInputStream inputStream = new FileInputStream("C:\\Users\\95290\\Pictures\\Saved Pictures\\linux.jpg");
        ossClient.putObject("zebra-ecommerce", "linux2.jpg", inputStream);
        ossClient.shutdown();
        return null;
    }

    @Resource
    private CategoryService categoryService;

    @RequestMapping("/test3")
    public R testGetCascadedCategoryId() {
        Long[] cascadedCategoryId = categoryService.getCascadedCategoryId(10101L);
        return R.ok().put("data", cascadedCategoryId);
    }

}